home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / GameboyDev / GBDK / lib / cgb.s < prev    next >
Encoding:
Text File  |  1999-03-30  |  2.3 KB  |  178 lines

  1.     .include "global.s"
  2.  
  3.     .title    "CGB support"
  4.     .module    CGB
  5.  
  6.     .area    _CODE
  7.  
  8. _set_bkg_palette::
  9.     PUSH    BC
  10.     PUSH    DE
  11.  
  12.     LDA    HL,9(SP)    ; Skip return address and registers
  13.     LD    B,(HL)        ; BC = rgb_data
  14.     DEC    HL
  15.     LD    C,(HL)
  16.     DEC    HL
  17.     LD    D,(HL)        ; D = nb_palettes
  18.     DEC    HL
  19.     LD    E,(HL)        ; E = first_palette
  20.  
  21.     LD    A,D        ; A = nb_palettes
  22.     ADD    E
  23.     ADD    A        ; A *= 8
  24.     ADD    A
  25.     ADD    A
  26.     LD    D,A
  27.  
  28.         LD      A,E        ; E = first_palette
  29.     ADD    A,A        ; A *= 8
  30.     ADD    A,A
  31.     ADD    A,A
  32.     LD    E,A        ; A = first BCPS data
  33. 2$:
  34.     LDH    A,(.STAT)
  35.     AND    #0x02
  36.     JR    NZ,2$
  37.  
  38.     LD    A,E
  39.     LDH    (.BCPS),A
  40.     LD    A,(BC)
  41.     LDH    (.BCPD),A
  42.     INC    BC        ; next rgb_data
  43.     INC    E        ; next BCPS
  44.     LD    A,E
  45.     CP    A,D
  46.     JR    NZ,2$
  47.  
  48.     POP    DE
  49.     POP    BC
  50.     RET
  51.  
  52. _set_sprite_palette::
  53.     PUSH    BC
  54.     PUSH    DE
  55.  
  56.     LDA    HL,9(SP)    ; Skip return address and registers
  57.     LD    B,(HL)        ; BC = rgb_data
  58.     DEC    HL
  59.     LD    C,(HL)
  60.     DEC    HL
  61.     LD    D,(HL)        ; D = nb_palettes
  62.     DEC    HL
  63.     LD    E,(HL)        ; E = first_palette
  64.  
  65.     LD    A,D        ; A = nb_palettes
  66.     ADD    E
  67.     ADD    A        ; A *= 8
  68.     ADD    A
  69.     ADD    A
  70.     LD    D,A
  71.  
  72.         LD      A,E        ; E = first_palette
  73.     ADD    A,A        ; A *= 8
  74.     ADD    A,A
  75.     ADD    A,A
  76.     LD    E,A        ; A = first BCPS data
  77. 2$:
  78.     LDH    A,(.STAT)
  79.     AND    #0x02
  80.     JR    NZ,2$
  81.  
  82.     LD    A,E
  83.     LDH    (.OCPS),A
  84.     LD    A,(BC)
  85.     LDH    (.OCPD),A
  86.     INC    BC        ; next rgb_data
  87.     INC    E        ; next BCPS
  88.     LD    A,E
  89.     CP    A,D
  90.     JR    NZ,2$
  91.  
  92.     POP    DE
  93.     POP    BC
  94.     RET
  95.  
  96.  
  97. _set_bkg_palette_entry::
  98.     PUSH    BC
  99.     PUSH    DE
  100.  
  101.     LDA    HL,9(SP)    ; Skip return address and registers
  102.     LD    B,(HL)        ; BC = rgb_data
  103.     DEC    HL
  104.     LD    C,(HL)
  105.     DEC    HL
  106.     LD    D,(HL)        ; D = pal_entry
  107.     DEC    HL
  108.     LD    E,(HL)        ; E = first_palette
  109.  
  110.         LD      A,E        ; E = first_palette
  111.     ADD    A        ; A *= 8
  112.     ADD    A
  113.     ADD    A
  114.     ADD    D        ; A += 2 * pal_entry
  115.     ADD    D
  116.     LD    E,A        ; A = first BCPS data
  117.  
  118. 2$:
  119.     LDH    A,(.STAT)
  120.     AND    #0x02
  121.     JR    NZ,2$
  122.  
  123.     LD    A,E
  124.     LDH    (.BCPS),A
  125.     LD    A,C
  126.     LDH    (.BCPD),A
  127.     INC    E        ; next BCPS
  128.  
  129.     LD    A,E
  130.     LDH    (.BCPS),A
  131.     LD    A,B
  132.     LDH    (.BCPD),A
  133.  
  134.     POP    DE
  135.     POP    BC
  136.     RET
  137.  
  138. _set_sprite_palette_entry::
  139.     PUSH    BC
  140.     PUSH    DE
  141.  
  142.     LDA    HL,9(SP)    ; Skip return address and registers
  143.     LD    B,(HL)        ; BC = rgb_data
  144.     DEC    HL
  145.     LD    C,(HL)
  146.     DEC    HL
  147.     LD    D,(HL)        ; D = pal_entry
  148.     DEC    HL
  149.     LD    E,(HL)        ; E = first_palette
  150.  
  151.         LD      A,E        ; E = first_palette
  152.     ADD    A        ; A *= 8
  153.     ADD    A
  154.     ADD    A
  155.     ADD    D        ; A += 2 * pal_entry
  156.     ADD    D
  157.     LD    E,A        ; A = first BCPS data
  158.  
  159. 2$:
  160.     LDH    A,(.STAT)
  161.     AND    #0x02
  162.     JR    NZ,2$
  163.  
  164.     LD    A,E
  165.     LDH    (.OCPS),A
  166.     LD    A,C
  167.     LDH    (.OCPD),A
  168.     INC    E        ; next BCPS
  169.  
  170.     LD    A,E
  171.     LDH    (.OCPS),A
  172.     LD    A,B
  173.     LDH    (.OCPD),A
  174.  
  175.     POP    DE
  176.     POP    BC
  177.     RET
  178.